package com.ruoyi.system.service;

import java.util.List;
import com.ruoyi.system.domain.BizInspectionPlan;

/**
 * 来料检验计划Service接口
 * 
 * @author ruoyi
 * @date 2025-10-30
 */
public interface IBizInspectionPlanService 
{
    /**
     * 查询来料检验计划
     * 
     * @param planId 来料检验计划主键
     * @return 来料检验计划
     */
    public BizInspectionPlan selectBizInspectionPlanByPlanId(Long planId);

    /**
     * 查询来料检验计划列表
     * 
     * @param bizInspectionPlan 来料检验计划
     * @return 来料检验计划集合
     */
    public List<BizInspectionPlan> selectBizInspectionPlanList(BizInspectionPlan bizInspectionPlan);

    /**
     * 新增来料检验计划
     * 
     * @param bizInspectionPlan 来料检验计划
     * @return 结果
     */
    public int insertBizInspectionPlan(BizInspectionPlan bizInspectionPlan);

    /**
     * 修改来料检验计划
     * 
     * @param bizInspectionPlan 来料检验计划
     * @return 结果
     */
    public int updateBizInspectionPlan(BizInspectionPlan bizInspectionPlan);

    /**
     * 批量删除来料检验计划
     * 
     * @param planIds 需要删除的来料检验计划主键集合
     * @return 结果
     */
    public int deleteBizInspectionPlanByPlanIds(Long[] planIds);

    /**
     * 删除来料检验计划信息
     * 
     * @param planId 来料检验计划主键
     * @return 结果
     */
    public int deleteBizInspectionPlanByPlanId(Long planId);

    /**
     * 检验拒收后，回滚前置流程到采购订单生成箱码之前：
     * - 采购订单明细的状态与已打码/未打码数量回滚
     * - 采购订单主表的状态与汇总数量回滚
     * - 相关送货单与收料通知单状态置为 REJECTED
     * - 相关箱码状态置为 REJECTED
     * @param planNo 检验计划编号
     */
    void rejectAndRollback(String planNo);
}
